// 父类---超类 super
(function () {
  class Animal {
    name: string;

    constructor(name: string) {
      this.name = name;
    }

    sayHi() {
      console.log("hi");
    }
  }

  class Dog extends Animal {
    age: number;
    // 如果在子类中写了构造函数，在子类的构造函数中必须对父类的构造函数进行调用
    constructor(name: string, age: number) {
      super(name);
      this.age = age;
    }
    sayHi() {
      // 在类的方法中，super就表示当前类的父类
      super.sayHi();
    }
  }

  const d = new Dog("spike", 3);
  d.sayHi();
})();
